Wrapper static class on top of all the Windows ListBox
messages
A list box control contains a simple list from which the user can generally select one or more items. List boxes provide limited flexibility compared with List View controls.
List box items can be represented by text strings, bitmaps, or both. If the list box is not large enough to display all the list box items at once, the list box provides a scroll bar. The user scrolls through the list box items and applies or removes selection status as necessary. Selecting a list box item changes its visual appearance, usually by changing the text and background colors to those specified by the relevant operating system metrics. When the user selects or deselects an item, the system sends a notification message to the parent window of the list box.
There are two types of list boxes: single-selection (the default) and multiple-selection. In a single-selection list box, the user can select only one item at a time. In a multiple-selection list box, the user can select more than one item at a time. To create a multiple-selection list box, specify the LBS_MULTIPLESEL or the LBS_EXTENDEDSEL style.
The appearance and operation of a list box is controlled by list box styles and window styles. These styles indicate whether the list is sorted, arranged in multiple columns, drawn by the application, and so on.
A drag list box is a special type of list box that enables the user to drag items from one position to another. An application can use a drag list box to display strings in a particular sequence and enable the user to change the sequence by dragging the items into position.
Drag list boxes have the same window styles and process the same messages as standard list boxes. To create a drag list box, first create a standard list box and then call the MakeDragList function.
See: About List Boxes
Include file: CListBox.inc.
| Name | Description |
|---|---|
| AddFile | Adds item data to the list box. |
| AddItemData | Adds the specified filename to a list box that contains a directory listing. |
| AddString | Adds a string to a list box. |
| CalcHorizontalExtent | Calculates the size, in logical units, of the widest string item. |
| DeleteString | Deletes a string in a list box. |
| Dir | Adds the names of directories and files that match a specified string and set of file attributes. |
| Disable | Disables the control. |
| Enable | Enables the control. |
| FindItemData | Finds the first item in a list box that has the specified item data. |
| FindString | Finds the first string in a list box that begins with the specified string. |
| FindStringExact | Finds the first list box string that exactly matches the specified string, except that the search is not case sensitive. |
| GetAnchorIndex | Gets the index of the anchor item–that is, the item from which a multiple selection starts. |
| GetCaretIndex | Determines the index of the item that has the focus rectangle in a multiple-selection list box. |
| GetCount | Gets the number of items in a list box. |
| GetCurSel | Gets the index of the currently selected item, if any, in a list box. |
| GetHorizontalExtent | Gets the width, in pixels, that a list box can be scrolled horizontally (the scrollable width) if the list box has a horizontal scroll bar. |
| GetListBoxInfo | Gets the number of items in a list box. |
| GetItemData | Gets the application-defined value associated with the specified list box item. |
| GetItemHeight | Gets the height of items in a list box. |
| GetItemRect | Gets the dimensions of the rectangle that bounds a list box item as it is currently displayed in the list box. |
| GetLocale | Gets the current locale of the list box. |
| GetSel | Gets the selection state of an item. |
| GetSelCount | Gets the total number of selected items in a multiple-selection list box. |
| GetSelect | The listbox is searched to find the first selected item. |
| GetSelItems | Fills a buffer with an array of integers that specify the item numbers of selected items in a multiple-selection list box. |
| GetText | Gets a string from a list box. |
| GetTextLen | Gets the length of a string in a list box. |
| GetTopIndex | Gets the index of the first visible item in a list box. |
| InitStorage | Allocates memory for storing list box items. |
| InsertItemData | Inserts item data to a list box. |
| InsertString | Inserts a string into a list box. |
| ItemFromPoint | Gets the zero-based index of the item nearest the specified point in a list box. |
| RemoveDarkMode | Removes the control dark mode. |
| ReplaceString | Replaces a string, and his associated data, into a list box. |
| ResetContent | Removes all items from a list box. |
| SelectItemData | Searches a list box for an item that has the specified item data. |
| SelectString | Searches a list box for an item that begins with the characters in a specified string. |
| SelItemRange | Selects one or more consecutive items in a multiple-selection list box. |
| SelItemRangeEx | Selects one or more consecutive items in a multiple-selection list box. |
| SetAnchorIndex | Sets the anchor item–that is, the item from which a multiple selection starts. |
| SetCaretIndex | Sets the focus rectangle to the item at the specified index in a multiple-selection list box. |
| SetColumnWidth | Sets the width, in pixels, of all columns in a multiple-column list box. |
| SetCount | Sets the count of items in a list box created with the LBS_NODATA style and not created with the LBS_HASSTRINGS style. |
| SetCurSel | Selects a string and scroll it into view, if necessary. |
| SetDarkMode | Set the control dark mode. |
| SetHorizontalExtent | Sets the width, in pixels, by which a list box can be scrolled horizontally. |
| SetItemData | Sets a value associated with the specified item in a list box. |
| SetItemHeight | Sets the height, in pixels, of items in a list box. |
| SetLocale | Sets the current locale of the list box. |
| SetSel | Selects a string in a list box. |
| SetTabStops | Sets the tab-stop positions in a list box. |
| SetText | Sets the text of the specified item. |
| SetTopIndex | Ensures that a particular item in a list box is visible. |
| UnselectString | Unselects the specified string in a multiple-selection list box. |
Adds the specified filename to a list box that contains a directory listing.
FUNCTION CListBox.AddFile (BYVAL hListBox AS HWND, BYVAL pwszFileName AS WSTRING PTR) AS LONG
| Parameter | Description |
|---|---|
| hListBox | The handle of the listbox control. |
| pwszFileName | A pointer to a buffer that specifies the name of the file to add. |
The return value is the zero-based index of the file that was added, or LB_ERR if an error occurs.
The list box to which pwszFileName is added must have been filled by the DlgDirList function.
The LB_INITSTORAGE message helps speed up the initialization of list boxes that have a large number of items (more than 100). It reserves the specified amount of memory so that subsequent LB_ADDFILE messages take the shortest possible time. You can use estimates for the wParam and lParam parameters. If you overestimate, the extra memory is allocated; if you underestimate, the normal allocation is used for items that exceed the requested amount.
CListBox.AddFile(hListBox, filename)
Adds item data to the list box.
FUNCTION CListBox.AddItemData (BYVAL hListBox AS HWND, BYVAL pData AS ANY PTR) AS LONG
| Parameter | Description |
|---|---|
| hListBox | The handle of the listbox control. |
| pData | Specifies the value to be associated with the item. If the list box has an owner-drawn style but not the LBS_HASSTRINGS style, this parameter is stored as item data instead of a string. You can send the LB_GETITEMDATA and LB_SETITEMDATA messages to retrieve or modify the item data. |
The return value is the zero-based index of the string in the list box. If an error occurs, the return value is LB_ERR. If there is insufficient space to store the new string, the return value is LB_ERRSPACE.
Adds a string to a list box. If the list box does not have the LBS_SORT style, the string is added to the end of the list. Otherwise, the string is inserted into the list and the list is sorted.
FUNCTION CListBox.AssString(BYVAL hListBox AS HWND, BYVAL pwszText AS WSTRING PTR) AS LONG
| Parameter | Description |
|---|---|
| hListBox | The handle of the listbox control. |
| pwszText | A pointer to the null-terminated string that is to be added. |
The return value is the zero-based index of the string in the list box. If an error occurs, the return value is LB_ERR. If there is insufficient space to store the new string, the return value is LB_ERRSPACE.
If the list box has an owner-drawn style and the LBS_SORT style, but not the LBS_HASSTRINGS style, the system sends the WM_COMPAREITEM message one or more times to the owner of the list box to place the new item properly in the list box.
The LB_INITSTORAGE message helps speed up the initialization of list boxes that have a large number of items (more than 100). It reserves the specified amount of memory so that subsequent LB_ADDSTRING messages take the shortest possible time. You can use estimates for the wParam and lParam parameters. If you overestimate, the extra memory is allocated; if you underestimate, the normal allocation is used for items that exceed the requested amount.
If the list box has the WS_HSCROLL style and you add a string wider than the list box, send an LB_SETHORIZONTALEXTENT message to ensure the horizontal scroll bar appears.
CListBox.AddString(hListBox, "New string")
Calculates the size, in logical units, of the widest string item.
FUNCTION CListBox.CalcHorizontalExtent(BYVAL hListBox AS HWND) AS LONG
Returns the size, in logical units, of the widest string item in the ListBox.
DIM cx AS LONG = CListBox.CalcHorizontalExtent(hListBox)
Deletes a string in a list box.
FUNCTION CListBox.DeleteString (BYVAL hListBox AS HWND, BYVAL index AS LONG) AS LONG
| Parameter | Description |
|---|---|
| hListBox | The handle of the listbox control. |
| index | The zero-based index of the string to be deleted. |
The return value is a count of the strings remaining in the list. The return value is LB_ERR if the index parameter specifies an index greater than the number of items in the list.
If an application creates the list box with an owner-drawn style but without the LBS_HASSTRINGS style, the system sends a WM_DELETEITEM message to the owner of the list box so the application can free any additional data associated with the item.
CListBox.DeleteString(hListBox, 5)
Adds names to the list displayed by a list box. The message adds the names of directories and files that match a specified string and set of file attributes. It can also add mapped drive letters to the list box.
FUNCTION Dir (BYVAL hListBox AS HWND, BYVAL Attr AS DWORD, BYVAL pwszFileSpec AS WSTRING PTR) AS LONG
| Parameter | Description |
|---|---|
| hListBox | The handle of the listbox control. |
| Attr | The attributes of the files or directories to be added to the list box. This parameter can be one or more of the values listed below. |
| pwszFileSpec | A pointer to the null-terminated string that specifies an absolute path, relative path, or filename. An absolute path can begin with a drive letter (for example, d:) or a UNC name (for example, \\machinename\sharename). If the string specifies a filename or directory that has the attributes specified by the Attr parameter, the filename or directory is added to the list. If the filename or directory name contains wildcard characters (? or ), all files or directories that match the wildcard expression and have the attributes specified by the Attr* parameter are added to the list. |
| Attribute | Meaning |
|---|---|
| DDL_ARCHIVE | Includes archived files. |
| DDL_DIRECTORY | Includes subdirectories. Subdirectory names are enclosed in square brackets ([ ]). |
| DDL_DRIVES | All mapped drives are added to the list. Drives are listed in the form [-x-], where x is the drive letter. |
| DDL_EXCLUSIVE | Includes only files with the specified attributes. By default, read/write files are listed even if DDL_READWRITE is not specified. |
| DDL_HIDDEN | Includes hidden files. |
| DDL_READONLY | Includes read-only files. |
| DDL_READWRITE | Includes read/write files with no additional attributes. This is the default setting. |
| DDL_SYSTEM | Includes system files. |
If the message succeeds, the return value is the zero-based index of the last name added to the list.
If an error occurs, the return value is LB_ERR. If there is insufficient space to store the new strings, the return value is LB_ERRSPACE.
The LB_INITSTORAGE message helps speed up the initialization of list boxes that have a large number of items (more than 100). It reserves the specified amount of memory so that subsequent LB_DIR messages take the shortest possible time. You can use estimates for the wParam and lParam parameters. If you overestimate, the extra memory is allocated; if you underestimate, the normal allocation is used for items that exceed the requested amount.
If Attr includes the DDL_DIRECTORY flag and pwszFileSpec specifies all the subdirectories of a first-level directory, such as C:\TEMP\*, the list box will always include a “..” entry for the root directory. This is true even if the root directory has hidden or system attributes and the DDL_HIDDEN and DDL_SYSTEM flags are not specified. The root directory of an NTFS volume has hidden and system attributes.
The list displays long filenames, if any.
CListBox.Adddir(hListBox, DDL_DIRECTORY, filepath)
Disables the control
FUNCTION Disable (BYVAL hListBox AS HWND) AS BOOLEAN
False if the control was previous disabled; otherwise TRUE.
CListBox.Disable(hListBox)
Enables the control
FUNCTION Enable (BYVAL hListBox AS HWND) AS BOOLEAN
Return value: False if the control was previous enabled; otherwise TRUE
CListBox.Enable(hListBox)
Finds the first item in a list box that has the specified item data.
FUNCTION FindItemData (BYVAL hListBox AS HWND, BYVAL indexStart AS LONG, BYVAL pData AS ANY PTR) AS LONG
| Parameter | Description |
|---|---|
| hListBox | The handle of the listbox control. |
| indexStart | The zero-based index of the item before the first item to be searched. When the search reaches the bottom of the list box, it continues searching from the top of the list box back to the item specified by the indexStart parameter. If indexStart is -1, the entire list box is searched from the beginning. |
| pData | The data value to find. |
The return value is the index of the matching item, or LB_ERR if the search was unsuccessful.
CListBox.FindItemData(hListBox, 4, pdata)
Finds the first string in a list box that begins with the specified string.
FUNCTION FindString (BYVAL hListBox AS HWND, BYVAL indexStart AS LONG, BYVAL pwszString AS WSTRING PTR) AS LONG
| Parameter | Description |
|---|---|
| hListBox | The handle of the listbox control. |
| indexStart | The zero-based index of the item before the first item to be searched. When the search reaches the bottom of the list box, it continues searching from the top of the list box back to the item specified by the indexStart parameter. If indexStart is -1, the entire list box is searched from the beginning. |
| pwszString | A pointer to the null-terminated string that contains the string for which to search. The search is case independent, so this string can contain any combination of uppercase and lowercase letters. |
The return value is the index of the matching item, or LB_ERR if the search was unsuccessful.
If the list box has the owner-drawn style but not the LBS_HASSTRINGS style, the action taken by LB_FINDSTRING depends on whether the LBS_SORT style is used. If LBS_SORT is used, the system sends WM_COMPAREITEM messages to the list box owner to determine which item matches the specified string.
CListBox.FindString(hListBox, 4, "strig to find")
Finds the first list box string that exactly matches the specified string, except that the search is not case sensitive.
FUNCTION FindStringExact (BYVAL hListBox AS HWND, BYVAL indexStart AS LONG, BYVAL pwszSearchString AS WSTRING PTR) AS LONG
| Parameter | Description |
|---|---|
| hListBox | The handle of the listbox control. |
| indexStart | The zero-based index of the item before the first item to be searched. When the search reaches the bottom of the list box, it continues searching from the top of the list box back to the item specified by the indexStart parameter. If indexStart is -1, the entire list box is searched from the beginning. |
| pwszString | A pointer to the null-terminated string that contains the string for which to search. The search is case independent, so this string can contain any combination of uppercase and lowercase letters. |
The return value is the index of the matching item, or LB_ERR if the search was unsuccessful.
This function is only successful if the specified string and a list box item have the same length (except for the null at the end of the specified string) and have exactly the same characters.
If the list box has the owner-drawn style but not the LBS_HASSTRINGS style, the action taken by LB_FINDSTRING depends on whether the LBS_SORT style is used. If LBS_SORT is used, the system sends WM_COMPAREITEM messages to the list box owner to determine which item matches the specified string.
CListBox.FindStringExact(hListBox, 4, "strig to find")
Gets the index of the anchor item that is, the item from which a multiple selection starts. A multiple selection spans all items from the anchor item to the caret item.
FUNCTION GetAnchorIndex (BYVAL hListBox AS HWND) AS LONG
The return value is the zero-based index of the anchor item, or LB_ERR if an error occurs.
DIM index AS LONG = CListBox.GetAnchorIndex(hListBox)
Retrieves the index of the item that has the focus in a multiple-selection list box. The item may or may not be selected.
FUNCTION GetCaretIndex (BYVAL hListBox AS HWND) AS LONG
The return value is the zero-based index of the focused list box item, or 0 if no item has the focus.
This message can also be used to get the index of the item that is currently selected in a single-selection list box.
DIM index AS LONG = CListBox.GetCaretIndex(hListBox)
Gets the number of items in a list box.
FUNCTION GetCount (BYVAL hListBox AS HWND) AS LONG
The return value is the number of items in the list box, or LB_ERR if an error occurs.
The returned count is one greater than the index value of the last item (the index is zero-based).
DIM count AS LONG = CListBox.GetCount(hListBox)
Gets the index of the currently selected item, if any, in a list box.
FUNCTION GetCurSel (BYVAL hListBox AS HWND) AS LONG
The return value is the zero-based index of the currently selected item. If there is no selection, the return value is LB_ERR.
DIM sel AS LONG = CListBox.GetCurSel(hListBox)
Gets the width, in pixels, that a list box can be scrolled horizontally (the scrollable width) if the list box has a horizontal scroll bar.
FUNCTION GetHorizontalExtent (BYVAL hListBox AS HWND) AS LONG
The return value is the scrollable width, in pixels, of the list box.
To respond to the LB_GETHORIZONTALEXTENT message, the list box must have been defined with the WS_HSCROLL style.
If the application does not set the horizontal extent of the list box (using LB_SETHORIZONTALEXTENT), the default horizontal extent is zero. Note that the list box does not update its horizontal extent dynamically.
DIM cx AS LONG = CListBox.GetHorizontalExtent(hListBox)
Gets the number of items per column in a specified list box.
FUNCTION GetListBoxInfo (BYVAL hListBox AS HWND) AS LONG
The return value is the number of items per column.
This message is equivalent to GetListBoxInfo.
DIM items AS LONG = CListBox.GetListBoxInfo(hListBox)
Gets the application-defined value associated with the specified list box item.
FUNCTION GetItemData (BYVAL hListBox AS HWND, BYVAL index AS LONG) AS ANY PTR
| Parameter | Description |
|---|---|
| hListBox | The handle of the listbox control. |
| index | The index of the item. |
The return value is the value associated with the item, or LB_ERR if an error occurs. If the item is in an owner-drawn list box and was created without the LBS_HASSTRINGS style, this value was in the lParam parameter of the LB_ADDSTRING or LB_INSERTSTRING message that added the item to the list box. Otherwise, it is the value in the lParam of the LB_SETITEMDATA message.
DIM pData AS ANY PTR = CListBox.GetItemData(hListBox)
Gets the height of items in a list box.
FUNCTION GetItemHeight (BYVAL hListBox AS HWND, BYVAL index AS LONG) AS LONG
| Parameter | Description |
|---|---|
| hListBox | The handle of the listbox control. |
| index | The index of the item. |
The return value is the height, in pixels, of each item in the list box. The return value is the height of the item specified by the wParam parameter if the list box has the LBS_OWNERDRAWVARIABLE style. The return value is LB_ERR if an error occurs.
DIM height AS LONG = CListBox.GetItemHeight(hListBox)
Gets the dimensions of the rectangle that bounds a list box item as it is currently displayed in the list box.
FUNCTION GetItemRect (BYVAL hListBox AS HWND, BYVAL index AS LONG, BYVAL prc AS RECT PTR) AS LONG
FUNCTION GetItemRect (BYVAL hListBox AS HWND, BYVAL index AS LONG, BYREF rc AS RECT) AS LONG
FUNCTON GetItemRect (BYVAL hListBox AS HWND, BYVAL index AS LONG) AS RECT
| Parameter | Description |
|---|---|
| hListBox | The handle of the listbox control. |
| index | The zero-based index of the item. |
| prc | A pointer to a RECT structure that will receive the client coordinates for the item in the list box. |
| rc | A RECT structure that will receive the client coordinates for the item in the list box. |
If an error occurs, the return value is LB_ERR.
DIM rc AS RECT
CListBox.GetItemRect(hListBox, 5, @rc)
CListBox.GetItemRect(hListBox, 5, rc)
rc = CListBox.GetItemRect(hListBox, 5)
Gets the current locale of the list box. You can use the locale to determine the correct sorting order of displayed text (for list boxes with the LBS_SORT style) and of text added by the LB_ADDSTRING message.
FUNCTION GetLocale (BYVAL hListBox AS HWND) AS LONG
The return value specifies the current locale of the list box. The HIWORD contains the country/region code and the LOWORD contains the language identifier.
The language identifier consists of a sublanguage identifier and a primary language identifier. Use the PRIMARYLANGID macro to extract the primary language identifier from the LOWORD of the return value, and the SUBLANGID macro to extract the sublanguage identifier.
DIM locale AS LONG = CListBox.GetLocale(hListBox)
Gets the selection state of an item.
FUNCTION GetSel (BYVAL hListBox AS HWND, BYVAL Index AS LONG) AS BOOLEAN
| Parameter | Description |
|---|---|
| hListBox | The handle of the listbox control. |
| index | The zero-based index of the item. |
If an item is selected, the return value is greater than zero; otherwise, it is zero. If an error occurs, the return value is LB_ERR.
DIM bSel AS BOOLEAN = CListBox.GetSel(hListBox)
Gets the total number of selected items in a multiple-selection list box.
FUNCTION GetSelCount (BYVAL hListBox AS HWND) AS LONG
The return value is the count of selected items in the list box. If the list box is a single-selection list box, the return value is LB_ERR.
DIM count AS LONG = CListBox.GetSelCount(hListBox)
The listbox is searched to find the first selected item. If the item parameter is included, searching starts at that position to facilitate retrieving multiple selected items. If item is omitted, the search starts at the first data item. The index number of the selected item is returned as the result of the function. If no item is selected, the value -1 is returned
FUNCTION GetSelect (BYVAL hListBox AS HWND, BYVAL startIndex AS LONG = 0) AS LONG
| Parameter | Description |
|---|---|
| hListBox | The handle of the listbox control. |
| startIndex | The zero-based index of the starting item. |
The index of the first select index; if no item is selected, the value -1 is returned
DIM index AS LONG = CListBox.GetSelect(hListBox, 4)
Fills a buffer with an array of integers that specify the item numbers of selected items in a multiple-selection list box.
FUNCTION GetSelItems (BYVAL hListBox AS HWND, BYVAL items AS DWORD, BYVAL prgItems AS LONG PTR) AS LONG
| Parameter | Description |
|---|---|
| hListBox | The handle of the listbox control. |
| items | The maximum number of selected items whose item numbers are to be placed in the buffer. |
| prgItems | A pointer to a buffer large enough for the number of integers specified by the items parameter. |
The return value is the number of items placed in the buffer. If the list box is a single-selection list box, the return value is LB_ERR.
Gets a string from a list box.
FUNCTION GetText (BYVAL hListBox AS HWND, BYVAL index AS LONG) AS DWSTRING
| Parameter | Description |
|---|---|
| hListBox | The handle of the listbox control. |
| index | The zero-based index of the item to retrieve. |
The text of the item.
DIM dwsText AS DWSTRING = CListBox.GetText(hListBox, 4)
Gets the length of a string in a list box.
FUNCTION GetTextLen (BYVAL hListBox AS HWND, BYVAL index AS LONG) AS LONG
| Parameter | Description |
|---|---|
| hListBox | The handle of the listbox control. |
| index | The zero-based index of the string. |
DIM nLen AS LONG = CListBox.GetTextLen(hListBox, 4)
Gets the index of the first visible item in a list box. Initially the item with index 0 is at the top of the list box, but if the list box contents have been scrolled another item may be at the top. The first visible item in a multiple-column list box is the top-left item.
FUNCTION GetTopIndex (BYVAL hListBox AS HWND) AS LONG
The return value is the index of the first visible item in the list box.
DIM index AS LONG = CListBox.GetTopIndex(hListBox)
Allocates memory for storing list box items. This message can be used before an application adds a large number of items to a list box.
FUNCTION InitStorage (BYVAL hListBox AS HWND, BYVAL nItems AS DWORD, BYVAL nBytes AS DWORD) AS LONG
| Parameter | Description |
|---|---|
| hListBox | The handle of the listbox control. |
| nItems | The number of items for which to reserve space. |
| nBytes | The amount of additional memory, in bytes, to allocate for item strings. |
If the message is successful, the return value is the total number of items that the list box can store before a memory reallocation is needed.
If the message fails, the return value is LB_ERRSPACE.
The LB_INITSTORAGE message helps speed up the initialization of list boxes that have a large number of items (more than 100). It reserves the specified amount of memory so that subsequent LB_ADDSTRING, LB_INSERTSTRING, LB_DIR, and LB_ADDFILE messages are more efficient. You can use estimates for the nItems and nBytes parameters. If you overestimate, the extra memory remains allocated; if you underestimate, the list box will allocate additional memory as necessary.
The memory required to store a string includes the null terminator. Therefore, if you plan to add 100 strings, each with a length of 10 characters, you would pass a nItems of 100 and an nBytes of 100 × (10 + 1) × sizeof(TCHAR).
DIM items AS LONG = CListBox.InitStorage(hListBox, nItems, nBytes)
Inserts item data to a list box.
FUNCTION InsertItemData (BYVAL hListBox AS HWND, BYVAL index AS LONG, BYVAL pData AS ANY PTR) AS LONG
| Parameter | Description |
|---|---|
| hListBox | The handle of the listbox control. |
| index | The zero-based index of the position at which to insert the string. If this parameter is -1, the string is added to the end of the list. |
| pData | Specifies the value to be associated with the item. |
The return value is the index of the position at which the string was inserted. If an error occurs, the return value is LB_ERR. If there is insufficient space to store the new string, the return value is LB_ERRSPACE.
DIM index AS LONG = CListBox.InsertItemData(hListBox, 3, pData)
Inserts a string or item data into a list box. Unlike the LB_ADDSTRING message, the LB_INSERTSTRING message does not cause a list with the LBS_SORT style to be sorted.
FUNCTION InsertString (BYVAL hListBox AS HWND, BYVAL index AS LONG, BYVAL pwszText AS WSTRING PTR) AS LONG
| Parameter | Description |
|---|---|
| hListBox | The handle of the listbox control. |
| index | The zero-based index of the position at which to insert the string. If this parameter is -1, the string is added to the end of the list. |
| pData | Specifies the value to be associated with the item. |
The return value is the index of the position at which the string was inserted. If an error occurs, the return value is LB_ERR. If there is insufficient space to store the new string, the return value is LB_ERRSPACE.
The LB_INITSTORAGE message helps speed up the initialization of list boxes that have a large number of items (more than 100). It reserves the specified amount of memory so that subsequent LB_INSERTSTRING messages take the shortest possible time. You can use estimates for the wParam and lParam parameters. If you overestimate, the extra memory is allocated; if you underestimate, the normal allocation is used for items that exceed the requested amount.
If the list box has WS_HSCROLL style and you insert a string wider than the list box, send an LB_SETHORIZONTALEXTENT message to ensure the horizontal scroll bar appears.
DIM index AS LONG = CListBox.InsertString(hListBox, 3, "Text string")
Gets the zero-based index of the item nearest the specified point in a list box.
FUNCTION ItemFromPoint (BYVAL hListBox AS HWND, BYVAL x AS SHORT, BYVAL y AS SHORT) AS LONG
| Parameter | Description |
|---|---|
| hListBox | The handle of the listbox control. |
| x | The x-coordinate of a point, relative to the upper-left corner of the client area of the list box. |
| x | The y-coordinate of a point, relative to the upper-left corner of the client area of the list box. |
DIM index AS LONG = CListBox.ItemFromPoint(hListBox, x, y)
Removes the control dark mode. Only affects the scroll bars.
FUNCTION RemoveDarkMode (BYVAL hListBox AS HWND) AS HRESULT
CListBox.RemoveDarkMode(hListBox)
Replaces a string, and his associated data, into a list box.
FUNCTION ReplaceString (BYVAL hListBox AS HWND, BYVAL index AS LONG, _
BYVAL pwszNewText AS WSTRING PTR, BYVAL pNewData AS ANY PTR = NULL) AS LONG
| Parameter | Description |
|---|---|
| hListBox | The handle of the listbox control. |
| index | The zero-based index of the string to be deleted. |
| pwszText | A pointer to a null-terminated unicode string. |
| pNewData | Specifies the value to be associated with the item. Default is NULL. |
The return value is the index of the position at which the string was inserted. As there is not a message to replace a string, the string is deleted and a new string is inserted.
CListBox.ReplaceString(hListBox, 3, "New string")
Removes all items from a list box.
SUB ResetContent (BYVAL hListBox AS HWND)
If the list box has an owner-drawn style but not the LBS_HASSTRINGS style, the owner of the list box receives a WM_DELETEITEM message for each item in the list box.
CListBox.ResetContent(hListBox)
Searches a list box for an item that has the specified item data. If a matching item is found, the item is selected.
SUB SelectItemData (BYVAL hListBox AS HWND, BYVAL indexStart AS LONG, BYVAL pData AS ANY PTR) AS LONG
| Parameter | Description |
|---|---|
| hListBox | The handle of the listbox control. |
| indexStart | The zero-based index of the item before the first item to be searched. When the search reaches the bottom of the list box, it continues searching from the top of the list box back to the item specified by the indexStart parameter. If indexStart is -1, the entire list box is searched from the beginning. |
| pData | The data value to find. |
CListBox.SelectItemData(hListBox, 3, pData)
Searches a list box for an item that begins with the characters in a specified string. If a matching item is found, the item is selected.
FUNCTION SelectString (BYVAL hListBox AS HWND, BYVAL start AS LONG, BYVAL pwszText AS WSTRING PTR) AS LONG
FUNCTION SelectString (BYVAL hListBox AS HWND, BYVAL index AS LONG =-1) AS LONG
| Parameter | Description |
|---|---|
| hListBox | The handle of the listbox control. |
| start | The zero-based index of the item before the first item to be searched. When the search reaches the bottom of the list box, it continues searching from the top of the list box back to the item specified by the start parameter. If start is -1, the entire list box is searched from the beginning. |
| pwszText | A pointer to the null-terminated string that contains the prefix for which to search. The search is case independent, so this string can contain any combination of uppercase and lowercase letters. |
| index | The zero-based index of the item to be selected. |
CListBox.SelectString(hListBox, 3, "Item 10")
CListBox.SelectString(hListBox, 5)
Selects or deselects one or more consecutive items in a multiple-selection list box.
FUNCTION SelItemRange (BYVAL hListBox AS HWND, BYVAL fSel AS BOOLEAN, _
BYVAL startIndex AS SHORT, BYVAL endIndex AS SHORT) AS LONG
| Parameter | Description |
|---|---|
| hListBox | The handle of the listbox control. |
| fSel | TRUE to select the range of items, or FALSE to deselect it. |
| startIndex | The zero-based index of the first item to select. |
| endIndex | The zero-based index of the last item to select. |
If an error occurs, the return value is LB_ERR.
Use this message only with multiple-selection list boxes.
This message can select a range only within the first 65,536 items.
CListBox.SelItemRange(hListBox, TRUE, 3, 10)
Selects one or more consecutive items in a multiple-selection list box.
FUNCTION SelItemRangeEx (BYVAL hListBox AS HWND, BYVAL startIndex AS LONG, BYVAL endIndex AS LONG) AS LONG
| Parameter | Description |
|---|---|
| hListBox | The handle of the listbox control. |
| startIndex | The zero-based index of the first item to select. |
| endIndex | The zero-based index of the last item to select. |
CListBox.SelItemRangeEx(hListBox, TRUE, 3, 10)
Sets the anchor item that is, the item from which a multiple selection starts. A multiple selection spans all items from the anchor item to the caret item.
FUNCTION SetAnchorIndex (BYVAL hListBox AS HWND, BYVAL index AS LONG) AS LONG
| Parameter | Description |
|---|---|
| hListBox | The handle of the listbox control. |
| index | Specifies the zero-based index of the new anchor item. |
If the message succeeds, the return value is zero.
If the message fails, the return value is LB_ERR.
CListBox.SetAnchorIndex(hListBox, 4)
Sets the focus rectangle to the item at the specified index in a multiple-selection list box. If the item is not visible, it is scrolled into view.
FUNCTION SetCaretIndex (BYVAL hListBox AS HWND, BYVAL index AS LONG, BYVAL fVisibility AS BOOLEAN = FALSE) AS LONG
| Parameter | Description |
|---|---|
| hListBox | The handle of the listbox control. |
| index | Specifies the zero-based index of the list box item that is to receive the focus rectangle. |
| fVisibility | If this value is FALSE, the item is scrolled until it is fully visible; if it is TRUE, the item is scrolled until it is at least partially visible. |
If an error occurs, the return value is LB_ERR (-1). Otherwise, LB_OKAY (0) is returned.
If this message is sent to a single-selection list box that does not contain a selected item, the caret index is set to the item specified by the fVisibility parameter. If the single-selection list box does contain a selected item, the list box returns LB_ERR.
Sets the width, in pixels, of all columns in a multiple-column list box.
SUB SetColumnWidth (BYVAL hListBox AS HWND, BYVAL nWidth AS DWORD) AS LONG
| Parameter | Description |
|---|---|
| hListBox | The handle of the listbox control. |
| nWidth | Specifies the width, in pixels, of all columns. |
CListBox.SetColumnWidth(hListBox, 100)
Sets the count of items in a list box created with the LBS_NODATA style and not created with the LBS_HASSTRINGS style.
SUB SetCount (BYVAL hListBox AS HWND, BYVAL nCount AS DWORD) AS LONG
| Parameter | Description |
|---|---|
| hListBox | The handle of the listbox control. |
| nCount | Specifies the new count of items in the list box. |
If an error occurs, the return value is LB_ERR. If there is insufficient memory to store the items, the return value is LB_ERRSPACE.
The LB_SETCOUNT message is supported only by list boxes created with the LBS_NODATA style and not created with the LBS_HASSTRINGS style. All other list boxes return LB_ERR.
CListBox.SetCount(hListBox, 200)
Selects a string and scrolls it into view, if necessary. When the new string is selected, the list box removes the highlight from the previously selected string.
SUB SetCurSel (BYVAL hListBox AS HWND, BYVAL index AS LONG) AS LONG
| Parameter | Description |
|---|---|
| hListBox | The handle of the listbox control. |
| index | Specifies the zero-based index of the string that is selected. If this parameter is -1, the list box is set to have no selection. |
If an error occurs, the return value is LB_ERR. If the wParam parameter is -1, the return value is LB_ERR even though no error occurred.
Use this message only with single-selection list boxes. You cannot use it to set or remove a selection in a multiple-selection list box.
CListBox.SetCurSel(hListBox, 200)
Set the control dark mode. Only affects the scroll bars.
FUNCTION CListBox.SetDarkMode (BYVAL hListBox AS HWND) AS HRESULT
If this function succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.
CListBox.SetDarkMode(hListBox)
Sets the width, in pixels, by which a list box can be scrolled horizontally (the scrollable width). If the width of the list box is smaller than this value, the horizontal scroll bar horizontally scrolls items in the list box. If the width of the list box is equal to or greater than this value, the horizontal scroll bar is hidden.
SUB SetHorizontalExtent (BYVAL hListBox AS HWND, BYVAL cxExtent AS LONG)
| Parameter | Description |
|---|---|
| hListBox | The handle of the listbox control. |
| cxExtent | Specifies the number of pixels by which the list box can be scrolled. |
To respond to the LB_SETHORIZONTALEXTENT message, the list box must have been defined with the WS_HSCROLL style.
Note that a list box does not update its horizontal extent dynamically.
This message has no effect on a multiple-column list box.
CListBox.SetHorizontalExtent(hListBox, 300)
Sets a value associated with the specified item in a list box.
FUNCTION SetItemData (BYVAL hListBox AS HWND, BYVAL index AS LONG, BYVAL pData AS ANY PTR) AS LONG
| Parameter | Description |
|---|---|
| hListBox | The handle of the listbox control. |
| index | Specifies the zero-based index of the item. If this value is -1, the pData value applies to all items in the list box. |
| pData | Specifies the value to be associated with the item. |
If an error occurs, the return value is LB_ERR.
If the item is in an owner-drawn list box created without the LBS_HASSTRINGS style, this message replaces the value contained in the pData parameter of the LB_ADDSTRING or LB_INSERTSTRING message that added the item to the list box.
CListBox.SetItemData(hListBox, 10, pData)
Sets the height, in pixels, of items in a list box. If the list box has the LBS_OWNERDRAWVARIABLE style, this message sets the height of the item specified by the wParam parameter. Otherwise, this message sets the height of all items in the list box.
FUNCTION SetItemHeight (BYVAL hListBox AS HWND, BYVAL nHeight AS DWORD) AS LONG
| Parameter | Description |
|---|---|
| hListBox | The handle of the listbox control. |
| index | Specifies the zero-based index of the item in the list box. Use this parameter only if the list box has the LBS_OWNERDRAWVARIABLE style; otherwise, set it to zero. |
| nHeight | Specifies the height, in pixels, of the item. The maximum height is 255 pixels. |
If the index or height is invalid, the return value is LB_ERR.
CListBox.SetItemHeight(hListBox, 30)
Sets the current locale of the list box. You can use the locale to determine the correct sorting order of displayed text (for list boxes with the LBS_SORT style) and of text added by the LB_ADDSTRING message.
FUNCTION SetLocale (BYVAL hListBox AS HWND, BYVAL wLocaleID AS DWORD) AS LONG
| Parameter | Description |
|---|---|
| hListBox | The handle of the listbox control. |
| wLocaleID | Specifies the locale identifier that the list box will use for sorting when adding text. |
The return value is the previous locale identifier. If the wParam parameter specifies a locale that is not installed on the system, the return value is LB_ERR and the current list box locale is not changed.
Use the MAKELCID macro to construct a locale identifier.
Selects an item in a multiple-selection list box and, if necessary, scrolls the item into view.
FUNCTION SetSel (BYVAL hListBox AS HWND, BYVAL fSelect AS BOOLEAN, BYVAL index AS LONG = -1) AS LONG
| Parameter | Description |
|---|---|
| hListBox | The handle of the listbox control. |
| fSelect | Specifies how to set the selection. If this parameter is TRUE, the item is selected and highlighted; if it is FALSE, the highlight is removed and the item is no longer selected. |
| index | Specifies the zero-based index of the item to set. If this parameter is -1, the selection is added to or removed from all items, depending on the value of fSelect, and no scrolling occurs. |
CListBox.SetSel(hListBox, TRUE, 10)
Sets the tab-stop positions in a list box.
FUNCTION SetTabStops (BYVAL hListBox AS HWND, BYVAL cTabs AS LONG, BYVAL prgTabs AS LONG PTR)
| Parameter | Description |
|---|---|
| hListBox | The handle of the listbox control. |
| cTabs | Specifies the number of tab stops. |
| prgTabs | Pointer to the first member of an array of integers containing the tab stops. The integers represent the number of quarters of the average character width for the font that is selected into the list box. For example, a tab stop of 4 is placed at 1.0 character units, and a tab stop of 6 is placed at 1.5 average character units. However, if the list box is part of a dialog box, the integers are in dialog template units. The tab stops must be sorted in ascending order; backward tabs are not allowed. |
If all the specified tabs are set, the return value is TRUE; otherwise, it is FALSE.
To respond to the LB_SETTABSTOPS message, the list box must have been created with the LBS_USETABSTOPS style.
If cTabs is 0 and prgTabs is NULL, the default tab stop is two dialog template units. If cTabs is 1, the list box will have tab stops separated by the distance specified by prgTabs.
If prgTabs points to more than a single value, a tab stop will be set for each value in prgTabs, up to the number specified by cTabs.
The values specified by prgTabs are in dialog template units, which are the device-independent units used in dialog box templates. To convert measurements from dialog template units to screen units (pixels), use the MapDialogRect function.
Sets the tab-stop positions in a list box.
FUNCTION SetText (BYVAL hListBox AS HWND, BYVAL index AS LONG, BYVAL pwszNewText AS WSTRING PTR) AS LONG
| Parameter | Description |
|---|---|
| hListBox | The handle of the listbox control. |
| index | The zero-based index of the string to be deleted. |
| pwszNewText | A pointer to a null-terminated unicode string. |
The return value is the index of the position at which the string was inserted. As there is not a message to replace a string, the string is deleted and a new string is inserted.
CListBox.SetText(hListBox, 3, "New string")
Ensures that a particular item in a list box is visible.
FUNCTION SetTopIndex (BYVAL hListBox AS HWND, BYVAL index AS LONG) AS LONG
| Parameter | Description |
|---|---|
| hListBox | The handle of the listbox control. |
| index | The zero-based index of the item in the list box. |
If an error occurs, the return value is LB_ERR.
The system scrolls the list box contents so that either the specified item appears at the top of the list box or the maximum scroll range has been reached.
CListBox.SetTopIndex(hListBox, 15)
Unselects the specified string in a multiple-selection list box.
FUNCTION UnselectString (BYVAL hListBox AS HWND, BYVAL index AS LONG = -1) AS LONG
| Parameter | Description |
|---|---|
| hListBox | The handle of the listbox control. |
| index | Specifies the zero-based index of the item to unselect. If this parameter is -1, the selection is removed from all items and no scrolling occurs. |
CListBox.UnselectString(hListBox, 5)